package com.koro.constant;

import lombok.Getter;

/**
 * 常量
 */
public class Constant {

    /**
     * 全局请求头名称
     */
    public static final String HEADER = "token";
    /**
     * smartToken
     */
    public static final String SMARTTOKEN = "smartToken";
    /**
     * smart同步用户
     */
    public static final String SMARTUSER = "hyhAdmin";

    /**
     * crm求头名称
     */
    public static final String CRMHEADER = "crmToken";

    public static final String PERSONNELHEADER = "personnelToken";

    /**
     * 超级管理员ID/合壹汇机构ID
     */
    public static final Integer SUPER_ADMIN = 1;

    /**
     * 最大角色ID
     */
    public static final Integer SUPER_ROLE = 1;

    /**
     * 客户角色ID
     */
    public static final Integer CUSTOMER_ROLE = 2;

    /**
     * 审核状态
     */
    @Getter
    public enum AuditorStatus {


        WAIT(0, "待审核"),


        PASS(1, "通过"),


        NOTPASS(2, "不通过"),

        SAVE(3, "暂存");

        private int value;
        private String remake;

        AuditorStatus(int value, String remake) {
            this.value = value;
            this.remake = remake;
        }

    }

    /**
     * 订单状态
     */
    @Getter
    public enum OrderStatus {


        PURCHASE(1, "采购"),

        PUT(2, "入库"),

        SELL(3, "销售"),

        OUT(4, "出库"),

        RECEPTION(5, "收票"),

        MAKE(6, "开票"),
        ;

        private int value;
        private String step;

        OrderStatus(int value, String step) {
            this.value = value;
            this.step = step;
        }

    }

    /**
     * 订单状态
     */
    @Getter
    public enum DingName {


        合壹汇医疗器械集团有限公司("合壹汇医疗器械集团有限公司"),
        合壹汇医疗器械集团有限公司会议打卡("合壹汇医疗器械集团有限公司-会议打卡"),
        广东合壹汇医疗科技有限公司("广东合壹汇医疗科技有限公司"),
        广东合壹汇医学检验有限公司("广东合壹汇医学检验有限公司"),

        ;

        private String name;

        DingName(String name) {
            this.name = name;
        }

    }

    /**
     * 订单状态
     */
    @Getter
    public enum OrderFinishStatus {


        FINISH(0, "已完结"),

        SAVE(1, "保存"),

        ORDER(2, "下单"),

        CONFIRMATION(3, "客户确认"),

        PAYMENT(4, "客户付款"),

        CANCEL(5, "取消"),

        TERMINALCONFIRM(6, "终端确认签收"),

        ;

        private int value;
        private String remake;

        OrderFinishStatus(int value, String remake) {
            this.value = value;
            this.remake = remake;
        }

    }

    /**
     * 后补功能名称
     */
    @Getter
    public enum LaterAddType {


        资料候补(1),

        验收前批号入库候补(2),

        线下付款(3),

        线下出库(4),

        线下开票(5),

        线下结算(6),

        无采购合同候补(7),

        无销售合同候补(8),

        采购合同(9),


        ;

        private int value;

        LaterAddType(int value) {
            this.value = value;
        }

    }

    /**
     * 集中操作中业务属性
     */
    @Getter
    public enum OrderAttribute {
        SELF(0, "自营"),

        ENTRUST(1, "委托"),

        ;

        private int value;
        private String remake;

        OrderAttribute(int value, String remake) {
            this.value = value;
            this.remake = remake;
        }
    }

    /**
     * 流程记录
     */
    @Getter
    public enum OrderRecord {


        SOURCE(0, "来源地"),

        ENDING(-1, "最终地"),
        ;

        private int value;
        private String remake;

        OrderRecord(int value, String remake) {
            this.value = value;
            this.remake = remake;
        }

    }

    @Getter
    public enum InputInvoiceType {


        SPECIAL(1, "专票"),
        SPECIAL1(2, "专票1%"),
        GENERAL(3, "普票"),
        ;

        private int value;
        private String remake;

        InputInvoiceType(int value, String remake) {
            this.value = value;
            this.remake = remake;
        }

    }


    /**
     * 是否
     */
    @Getter
    public enum YesOrNo {

        /**
         * 是
         */
        YES(0),
        /**
         * 否
         */
        NOT(1);

        private int value;

        YesOrNo(int value) {
            this.value = value;
        }

    }

    @Getter
    public enum GoodsSource {

        CPK("产品库", 1),

        BHD("备货单", 2);

        private String key;
        private int value;

        GoodsSource(String key, int value) {
            this.key = key;
            this.value = value;
        }

    }

    @Getter
    public enum GenerateNoTypeEnum {
        SELL("销售单", "DD"),
        PURCHASE("采购单", "CGD"),
        PURCHASE_CONTRACT("采购合同", "CGHT"),
        OUT("出库单", "CKD"),
        ACCEPTANCE("验收单", "YSD"),
        IN("入库单", "RKD"),
        DIARY("日记账单", "RJ"),
        KH("客户账单", "KH"),
        ZD("终端账单", "ZD"),
        ZC("支出单", "ZC"),
        STATEMENT("结算单", "JSD"),
        ADVANCESTATEMENT("垫资配送结算单", "DZJSD"),
        SALEREFUND("销售退款单", "TKD"),
        RECEIVABLE("应收终端", "YS"),
        PAYABLE_SUPPLIER("应付供应商", "YF"),
        PAYABLE("其他应付", "YF"),
        GDD("集中订单", "GDD"),
        XXD("线下业绩订单", "XXD"),
        STATEMENT_OF_ACCOUNT("集中订单", "DZD"),
        STOCK_UP("备货订单", "BHD"),
        MATERIAL_INQUIRY("耗材询价单", "HCD"),
        EQUIPMENT_INQUIRY("设备询价单", "SBD"),
        ADVANCE_FUND("垫资", "DZ"),
        TENDER("招投标", "ZTB"),
        INPUT_THE_INVOICE("销项发票", "XXFP"),
        APPLICATION_FOR_INPUT_INVOICE("销项发票申请", "FPSQ"),
        DISTRIBUTION("配货单", "PHD"),
        SALE_RETURN_APPLY("销售退货申请", "XT"),
        SALE_RETURN_CONFIRM("销售退货确认", "XTQRD"),
        SALE_RETURN_IN("销退入库单", "XTRKD"),
        PURCHASE_RETURN_APPLY("采购退货申请", "CT"),
        PURCHASE_RETURN_CONFIRM("采购退货确认", "CTQRD"),
        PURCHASE_RETURN_OUT("采购退货出库单", "CTCKD"),
        PURCHASE_BACK("采购退单", "CTD"),
        WAITING_TERMINAL("资料候补", "ZLHB"),
        MANUAL_STATEMENT("线下结算单", "XXJS"),
        INPUT_THE_INVOICE_OFFLINE("线下开票", "XXKP"),
        UNCERTAIN_OUTBOUND_ORDER("单价不确定申请单", "BQDSQ"),
        APPLICATION_FOR_DRAWBACK("退款申请", "TK"),
        DZ_APPLICATION_FOR_DRAWBACK("垫资保证金退款申请", "DZTK"),
        RECEIVABLES("终端回款单", "HKD"),
        ALTERNATES_STORE_GODOWN("入库后补资料单", "HB"),
        OFFLINE_STORE_OUTBOUND("入库后补资料单", "CKSQ"),
        BALANCE_DISBURSEMENT("余额支出", "YEZC"),
        DZFAZC("垫资方案支出", "FAZC"),
        SALE_RETURN_EXPENSES("销退支出", "XTZC"),
        GLK("关联款", "GLK"),
        REPORT_LOSS("报损单", "BSD"),
        TAX_INVOICE("税务发票", "SW"),
        INVALID_INVOICE("发票作废", "FPZF"),
        QUOTA_APPLY("业务员额度申请", "EDSQ"),
        QUOTA_DEDUCTION("业务员额度扣减", "EDKJ"),
        QUOTA_ZJ("业务员明细增加", "ZJ"),
        QUOTA_KJ("业务员明细扣减", "KJ"),
        INVENTORY_CHANGE("库存调拨", "KCDB"),
        REPORT_LOSS_PAYMENT("报损单货款", "ZC"),
        SLOUT("商流出库单", "SLCKD"),
        SLIN("商流入库单", "SLRKD"),
        ITEM_PH("候补临时批号", "ITEMPH"),
        STORAGE("存储条件", "CCTJ");

        private String key;
        private String value;

        GenerateNoTypeEnum(String key, String value) {
            this.key = key;
            this.value = value;
        }
    }

    /**
     * 操作状态
     */
    @Getter
    public enum OperationStateEnum {
        REMAIN("留存", 0),

        DELETE("删除", 1),
        ;

        private String key;
        private Integer value;

        OperationStateEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }

    }

    @Getter
    public enum OperationLogEnum {
        PURCHASE_LOG("采购单", 1),
        INPUT_INVOICE_LOG("进项发票", 5),
        PRODUCT_AUDIT("产品审核", 10),
        SUPPLIER_AUDIT("供应商厂家审核", 11),
        TERMINAL_AUDIT("终端审核", 12),
        BUSINESS_DOCUMENT("备货单附件", 13),
        QUALITYACCEPTANCE("验收单", 15),
        JOURNAL_LOG("日记账", 16),
        SALE_INVOICE_LOG("销项发票", 17),
        CUSTOMER_JOURNAL_LOG("客户日记账", 18),
        TERMINAL_JOURNAL_LOG("终端日记账", 19),
        SALE_INVOICE_MIDDLE_LOG("销项发票(中间公司)", 20),
        MANUAL_STATEMENT("线下结算", 21),
        RECEIVABLE_TERMINAL("应收终端款", 22),
        TERMINAL_RECEIVABLE("终端回款单", 23),
        INVALID_INVOICE_LOG("销项发票作废", 24),
        CRM_PROJECT_SAVE("crm项目保存修改", 25),
        PRODUCT_SAVE_LOG("产品保存修改记录", 26),
        ;

        private String key;
        private Integer value;

        OperationLogEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }

    }

    @Getter
    public enum SynWmsStatusEnum {
        NOT_SYN("未同步", 1),
        SUCCESS("同步成功", 2),
        FAIL("同步失败", -1),

        ;

        private String key;
        private Integer value;

        SynWmsStatusEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }

    }

    /**
     * 客户属性
     */
    @Getter
    public enum CustomerStatusEnum {
        WAIT("潜在客户", 1),
        FOLLOW("持续跟进客户", 2),
        COOPERATION("成交客户", 3),
        ;

        private String key;
        private int value;

        CustomerStatusEnum(String key, int value) {
            this.value = value;
            this.key = key;
        }

    }

    /**
     * 客户状态
     */
    @Getter
    public enum CustomerAttributeEnum {
        PARTNER("合伙人", 1),
        NOTPARTNER("非合伙人", 2),
        OTHER("其他", 3),
        ;

        private String key;
        private int value;

        CustomerAttributeEnum(String key, int value) {
            this.value = value;
            this.key = key;
        }

    }

    @Getter
    public enum BusinessBoxStatusEnum {
        WAIT("待办", 1),
        PROCESSING("进行中", 2),
        ALREADY("已办", 3),
        ;

        private String key;
        private Integer value;

        BusinessBoxStatusEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }

    }

    @Getter
    public enum WarehouseTypeEnum {
        SELF("直发", 1),
        TOD("到库", 2),
        ;

        private String key;
        private int value;

        WarehouseTypeEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }

    }

    @Getter
    public enum BusinessBoxTypeEnum {
        PRODUCT_CREATE("产品建档待办", 1),
        SUPPLIER_CREATE("供应商建档待办", 2),
        FACTORY_CREATE("厂家建档待办", 3),
        BUYER_CREATE("购货商建档待办", 4),
        MEDICAL_CREATE("医疗机构建档待办", 5),
        GDD_PURCHASE_UPCOMING("集团单采购待办", 6),
        BHD_PURCHASE_UPCOMING("备货单采购待办", 7),
        XJD_PURCHASE_UPCOMING("询价单采购待办", 8),
        JOURNAL_CLAIMANT("日记账待认领", 9),
        DISTRIBUTION("配货代办", 10),
        ADVANCE_SHEET("垫资申请代办", 11),
        FINANCE_SALES_INVOICE_APPLY("对账单开票申请", 12),
        ACCEPTANCE_CREATE("验收单待办", 13),
        JOURNAL_STATEMENT("结算单待认领", 14),
        DISTRIBUTION_APPLICATION("配货申请", 15),
        TRANSFER("调货待办", 16),
        SALES_INVOICE_APPLY("销项申请(待选择)待办", 17),
        SALES_REFUND_CHECK_APPLY("销售退款申请(财务复核)待办", 18),
        SALES_REFUND_APPLY("销售退款申请(财务办结)待办", 19),
        SALES_RETURN_CONFIRM("销退确认单待办", 20),
        PURCHASE_RETURN_CONFIRM("采退确认单待办", 21),
        TRANSFER_RETURN("调货待办(退货)", 22),
        WAITING_BUYER_CREATE("购货商资料候补待办", 23),
        WAITING_MEDICAL_CREATE("医疗机构资料候补待办", 24),
        WAITING_PRODUCT_CREATE("产品资料候补待办", 25),
        WAITING_FACTORY_CREATE("厂家资料候补待办", 26),
        WAITING_SUPPLIER_CREATE("供应商资料候补待办", 27),
        ;

        private String key;
        private Integer value;

        BusinessBoxTypeEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }

    }

    /**
     * @Description: 第三方档案系统业务类型
     * @Param:
     * @return:
     * @Author: james lee
     * @Date: 2021/3/26
     */
    @Getter
    public enum ExtTypeEnum {
        PURCHASE("采购合同", 1),

        ;

        private String key;
        private Integer value;

        ExtTypeEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }

    }

    /**
     * @Description: 合同管理类型枚举
     * @Author: james lee
     * @Date: 2021/3/30
     */
    @Getter
    public enum ContractManagementTypeEnum {
        //1采购合同2销售合同
        PURCHASE("采购合同", 1),
        SALE("销售合同", 2),
        ACCESSORY("线下结算附件", 3),
        OFFLINE_FUNDS("线下付款附件", 4),
        ;

        private String key;
        private Integer value;

        ContractManagementTypeEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }

    }

    /**
     * @Description: 合同管理合同类型枚举
     * @Author: james lee
     * @Date: 2021/3/30
     */
    @Getter
    public enum ContractManagementStateEnum {
        //1普通合同2年度合同
        普通合同("普通合同", 1),
        年度合同("年度合同", 2),
        ;

        private String key;
        private Integer value;

        ContractManagementStateEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }

    }

    /**
     * 流程记录
     */
    @Getter
    public enum DataAccess {


        ALLSECTOR(1, "当前组织"),
        SECTOR(2, "所属部门及下级"),
        ;

        private int value;
        private String remake;

        DataAccess(int value, String remake) {
            this.value = value;
            this.remake = remake;
        }

    }

    @Getter
    public enum PurchaseFundsStateEnum {
        //状态 0待申请 1暂存 2审批中 3已通过 -1驳回 -2删除 -3已撤销
        Wait("待申请", 0),
        Save("暂存", 1),
        Processing("审批中", 2),
        Pass("已通过", 3),
        Reject("驳回", -1),
        Delete("删除", -2),
        Revoke("已撤销", -3),

        ;

        private String key;
        private Integer value;

        PurchaseFundsStateEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }

    }

    @Getter
    public enum BindStateEnum {
        //状态值，0待绑定，2已绑定，-1关联不足,1重绑关联不足
        NotBind("待绑定", 0),
        Binding("已绑定", 2),
        Failed("关联不足", -1),
        RebindFailed("重绑关联不足", 1),
        ;

        private String key;
        private Integer value;

        BindStateEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }
    }

    @Getter
    public enum AdvanceSheetStateEnum {
        //状态  1审批中 2已通过 3驳回
//		Wait("待申请", 0),
//		Save("暂存", 1),
        Processing("审批中", 1),
        Pass("已通过", 2),
        Reject("驳回", 3),

        ;

        private String key;
        private Integer value;

        AdvanceSheetStateEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }

    }

    @Getter
    public enum SeeRegisterStateEnum {
        Processing("审批中", 1),
        Pass("已通过", 2),
        Reject("驳回", 3),

        ;

        private String key;
        private Integer value;

        SeeRegisterStateEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }

    }

    /**
     * 效期状态
     */
    @Getter
    public enum WarningStatus {
        NORMAL(1, "正常"),
        WARNING(0, "预警"),
        EXCEPTION(-1, "异常");

        private String value;
        private int key;

        WarningStatus(int key, String value) {
            this.value = value;
            this.key = key;
        }

    }

    /**
     * 效期状态
     */
    @Getter
    public enum WarningRgb {
        /**
         * 正常
         */
        GREEN("#effff1"),
        /**
         * 红色
         */
        RED("#ffefef");

        private String value;


        WarningRgb(String value) {
            this.value = value;

        }

    }

    /**
     * 首营主体类型
     */
    @Getter
    public enum FirstmanageSubjectType {
        MEDICAL("医疗机构", "medical"),
        SUPPLIER("供应商", "supplier"),
        PRODUCT("产品", "product"),
        COMPANY("购货商", "company"),
        MANUFACTURER("厂家", "manufacturer");
        private String key;
        private String value;

        FirstmanageSubjectType(String key, String value) {
            this.value = value;
            this.key = key;
        }

    }

    /**
     * 厂家、供应商
     */
    @Getter
    public enum SupplierType {
        MANUFACTURER(2, "厂家"),
        SUPPLIER(1, "供应商");
        private int key;
        private String value;

        SupplierType(int key, String value) {
            this.value = value;
            this.key = key;
        }

    }

    /**
     * 销售订单状态
     */
    @Getter
    public enum SaleOrderStatus {
        HOLD(0, "暂存"),
        ALLOCATE_CARGO(1, "待配货"),
        OBLIGATION(2, "待付款"),
        DROP_SHIPPING(3, "待发货(全部)"),
        WAIT_FOR_RECEIVING(4, "待发货（部分）"),
        FINISH(5, "完成"),
        CANCEL(6, "取消"),
        CARGO_CANCEL(7, "配货申请完成"),
        ;
        private int key;
        private String value;

        SaleOrderStatus(int key, String value) {
            this.value = value;
            this.key = key;
        }

    }


    /**
     * 集中订单操作类型
     */
    @Getter
    public enum OrderOperationLogType {
        BUSINESS(1, "商务跟进"),
        PURCHASE(2, "采购跟进"),
        TREASURY(3, "库管跟进"),
        FINANCE(4, "财务跟进"),
        ;
        private int key;
        private String value;

        OrderOperationLogType(int key, String value) {
            this.value = value;
            this.key = key;
        }

    }

    /**
     * 合作模式
     */
    @Getter
    public enum CooperationMode {
        DL(1, "代理"),
        ZL(2, "战略"),
        ;
        private int key;
        private String value;


        CooperationMode(int key, String value) {
            this.value = value;
            this.key = key;
        }
    }

    /**
     * 合作模式
     */
    @Getter
    public enum InquiryOrderStatus {
        DXJ(1, "待询价"),
        XJZ(2, "询价中"),
        DDBH(3, "订单驳回"),
        YWCXJ(4, "已完成询价"),
        DDGJZ(5, "订单跟进中"),
        DDJYCG(6, "订单交易成功"),
        DDJYSB(7, "订单交易失败"),
        ;
        private int key;
        private String value;


        InquiryOrderStatus(int key, String value) {
            this.value = value;
            this.key = key;
        }
    }

    /**
     * 产品类型
     */
    @Getter
    public enum ProductType {
        SB(1, "设备"),
        HC(2, "耗材"),
        ;
        private int key;
        private String value;


        ProductType(int key, String value) {
            this.value = value;
            this.key = key;
        }
    }

    @Getter
    //状态0保存5采购复核中10物流复核中15物流处理中20财务复核中25财务办结中200完成
    public enum SaleReturnStateEnum {
        保存(0, "保存"),
        采购复核中(5, "采购复核中"),
        物流复核中(10, "物流复核中"),
        物流处理中(15, "物流处理中"),
        财务复核中(20, "财务复核中"),
        财务办结中(25, "财务办结中"),
        完成(200, "完成"),
        ;
        private int key;
        private String value;


        SaleReturnStateEnum(int key, String value) {
            this.value = value;
            this.key = key;
        }
    }

    @Getter
    //状态-1取消 0保存 5物流处理中 200完成
    public enum UncertainOrderStateEnum {
        取消(-1, "取消"),
        保存(0, "保存"),
        物流处理中(5, "物流处理中"),
        WMS处理中(10, "WMS处理中"),
        完成(200, "完成"),
        ;
        private int key;
        private String value;


        UncertainOrderStateEnum(int key, String value) {
            this.value = value;
            this.key = key;
        }
    }

    @Getter
    //状态  "0.申请中；1.物流确认中；2.物流入库中；3.候补资料中；4.物流候补中；200.已完成；5.取消"
    public enum AlternatesStoreGodownApprovalStatusEnum {
        申请中(0, "申请中"),
        物流确认中(1, "物流确认中"),
        物流入库中(2, "物流入库中"),
        后补资料中(3, "后补资料中"),
        物流后补中(4, "物流候补中"),
        已完成(200, "已完成"),
        取消(6, "取消"),
        WMS处理中(7, "WMS处理中"),
        ;
        private int key;
        private String value;


        AlternatesStoreGodownApprovalStatusEnum(int key, String value) {
            this.value = value;
            this.key = key;
        }
    }

    @Getter
    //wms对接特殊终端
    public enum WmsSpecialTerminalEnum {
        调货终端(999999, "调货终端"),
        采退出库终端(99999999, "采退出库终端"),
        退货调货终端(888888, "退货调货终端"),
        单价不确定出库终端(88888888, "单价不确定出库终端"),
        线下出库终端(777777, "线下出库终端"),
        报损终端(666666, "报损终端"),
        盘盈盘亏终端(555555, "盘盈盘亏终端"),
        ;

        private int key;
        private String value;

        WmsSpecialTerminalEnum(int key, String value) {
            this.value = value;
            this.key = key;
        }

    }

    @Getter
    //-2已取消 -1已驳回 0保存 5审批中 200已通过
    public enum OfflineFundsStatusEnum {
        已取消(-2, "已取消"),
        已驳回(-1, "已驳回"),
        保存(1, "保存"),
        审批中(5, "审批中"),
        已通过(200, "已通过"),

        ;

        private int key;
        private String value;

        OfflineFundsStatusEnum(int key, String value) {
            this.value = value;
            this.key = key;
        }

    }

    @Getter
    public enum OfflineStoreOutboundDataEnum {
        ERP_EXIST_AND_WMS_UNEXIST(0, "ERP有库存，WMS无库存、有实物"),
        ERP_UNEXIST_AND_WMS_EXIST(1, "ERP无库存，WMS有库存、有实物"),
        ERP_UNEXIST_AND_WMS_UNEXIST(2, "ERP无库存，WMS无库存、有实物"),
        ERP_EXIST_AND_WMS_EXIST(3, "ERP有库存，WMS有库存"),
        ;
        private int key;
        private String value;

        OfflineStoreOutboundDataEnum(int key, String value) {
            this.value = value;
            this.key = key;
        }
    }

    @Getter
    public enum OfflineStoreOutboundDeliveryStatusEnum {
        保存(0, "保存"),
        物流确认中(1, "物流确认中"),
        物流处理中(2, "物流处理中"),
        后补资料中(3, "后补资料中"),
        物流验收中(4, "物流验收中"),
        已完成(200, "已完成"),
        取消(5, "取消"),
        ;
        private int key;
        private String value;


        OfflineStoreOutboundDeliveryStatusEnum(int key, String value) {
            this.value = value;
            this.key = key;
        }
    }

    /**
     * 报损原因
     */
    @Getter
    public enum ReportLossWhyEnum {
        EXPIRED("过期", 1),

        ABOUTEXPIRE("近效期", 2),

        NOEXPIRED("无有效期", 3),

        BREAKAGE("破损", 4),

        NOQUALIFIED("不合格", 5),
        ;

        private String key;
        private Integer value;

        ReportLossWhyEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }

    }

    /**
     * 报损状态
     */
    @Getter
    public enum ReportLossStatusEnum {
        SAVE("保存", 1),

        APPROVALING("审批中", 2),

        OVERRULED("驳回", 3),

        PASS("已通过", 4),

        CANCELS("已取消", 5),

        PURCHASECHECKING("采购复合中", 6),

        BUSINESSCHECKING("商务复合中", 7),

        FINANCECHECKING("财务复合中", 8),

        DDAPPROVALING("发起审批中", 9),

        TRANSPORTCHECKING("物流复合中", 10),

        WMSHANDLE("WMS处理中", 11),
        ;

        private String key;
        private Integer value;

        ReportLossStatusEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }

    }

    /**
     * 采购来源
     */
    @Getter
    public enum PurchaseTypeEnum {
        COLLECTING("集采", 1),

        BHD("备货", 2),

        INSIDEPURCHAS("内部采购", 3),

        SELFPURCHAS("为自采", 4),

        RETURN("退货", 5),

        OFFLINE("线下出库", 6),
        ;

        private String key;
        private Integer value;

        PurchaseTypeEnum(String key, Integer value) {
            this.value = value;
            this.key = key;
        }

    }

    /**
     * 完成状态
     */
    @Getter
    public enum FinishEnum {
        ALL("全部完成", 0),

        PART("部分完成", 1),

        WAIT("待完成", 2),
        ;

        private String key;
        private int value;

        FinishEnum(String key, int value) {
            this.value = value;
            this.key = key;
        }

    }

    /**
     * 问卷调查类型
     */
    @Getter
    public enum SurveyType {
        CORPORATECULTURALACTIVITIESSATISFACTION("企业文化活动满意度问卷", 1),

        EMPLOYEEMEALSATISFACTION("员工餐满意度调查问卷", 2),

        OFFICEENVIRONMENTSATISFACTION("办公环境满意度问卷", 3),
        ;

        private String key;
        private int value;

        SurveyType(String key, int value) {
            this.value = value;
            this.key = key;
        }
    }

    /**
     * WMS库存效期状态
     */
    @Getter
    public enum ValidityStatus {

        NEARTERM("近效期", 1),

        NORMAL("正常", 2),

        EXPIRED("过期", 3),
        ;

        private String key;
        private int value;

        ValidityStatus(String key, int value) {
            this.value = value;
            this.key = key;
        }
    }

    /**
     * 业务员备货额度变动类型
     */
    @Getter
    public enum QuotaType {
        SQZJED("申请增加额度", 1),

        SQKJED("申请扣减额度", 2),

        KCDBSQ("库存调拨申请", 3),
        CGQK("采购请款", 4),
        CGTD("采购退单", 5),
        CGTH("采购退货", 6),
        XSTH("销售退货", 7),
        XSCK("销售出库", 8),
        ;

        private String key;
        private int value;

        QuotaType(String key, int value) {
            this.value = value;
            this.key = key;
        }
    }

    /**
     * 业务员备货额度 默认数量
     */
    @Getter
    public enum QuotaDefaultNumber {
        LIMIT_COUNT("限制查询条数", 5),

        ;

        private String key;
        private int value;

        QuotaDefaultNumber(String key, int value) {
            this.value = value;
            this.key = key;
        }
    }

    @Getter
    public enum FirstmanageType {
        QUALITY_VALIDITY("质保协议效期"),

        ;
        private String value;

        FirstmanageType(String value) {
            this.value = value;
        }

    }

    @Getter
    public enum ConditionEnum {
        PRODUCTCODE("编号", "b.product_code"),
        GSPPRODUCTCODE("产品编号", "p.gsp_product_code"),
        MANUFACTURERPRODUCTCODE("厂家对接编码", "p.manufacturer_product_code"),
        PRODUCTNAME("产品名称", "p.product_name"),
        REGISTRATIONNUMBER("注册证号", "b.registration_number"),
        BATCHNUMBER("批号", "b.batch_number"),
        CUSTOMER("客户", "b.belong_to"),
        SUPPLIER("供应商", "b.supplier_name"),
        MANYUFACTURER("厂家", "b.manufacturer"),
        COMPANYNAME("组织", "b.company_name"),
        ;

        private String key;
        private String value;

        ConditionEnum(String key, String value) {
            this.value = value;
            this.key = key;
        }

    }
}
